The basic purpose of HTTP (hypertext transfer protocol) caching is to provide a mechanism for applications to scale better and perform faster. HTTP caching, however, is only applicable to idempotent requests (e.g., requests that will produce the same results if executed once or multiple times). Only idempotent and nullipotent responses can be cached because only such requests yield the same result when run one or multiple times.
In HTTP, this means that GET requests can be cached but not POST requests because POST requests are not idempotent or nullipotent. The POST request method is designed to request that a web server accept the data enclosed in the request message's body for storage. As part of a POST request, an arbitrary amount of data of any type can be sent to the server in a request message body. A header field in the POST request usually indicates the message body's Internet media type. It is often used when uploading a file or submitting a completed web form.
The HTTP GET request method is designed to retrieve information from the server. As part of a GET request, some data can be passed within the URI's query string, specifying for example search terms, date ranges, or other information that defines the query. But it is possible that an idempotent request cannot be sent as a GET request just because it exceeds limits imposed by popular Internet software. For example, search APIs typically take a lot of parameters, especially when there are a lot of characteristics for the product and all of them have to be passed as parameters. This leads to the question, the recommended ways of communicating over the wire when there are more parameters in the request than the “permitted” limit of a GET request include:                1. Re-evaluating the interface design if it takes a large number of parameters. Idempotent requests typically take a limited number of parameters that falls well within the GET limit.        2. Generating GET requests that are less than 2 KB. There is no such hard and fast limit imposed in the HTTP specification, but Internet clients and servers impose this limit. Some clients and servers support GET requests up to 8 KB.        3. Send the body in a GET request.None of these recommendations provide an acceptable solution.        